package com.wlc.base.jichu;

/**
 * @author 王立朝 wanglichao@champion-credit.com
 * @description 测试
 * @date 2021-07-29 09:18
 */
public class Demo09 {

    String name;

    public Demo09(String name) {
        this.name = name;
    }

    public Demo09() {
    }

    public void method01() {
        Demo09 d1 = new Demo09("王立朝");
        Demo09 d2 = new Demo09("王立朝");
        Demo09 d3 = d1;
        System.out.println("d1.equals(d2) = " + d1.equals(d2));
        System.out.println(d1 == d2);
        System.out.println("=======");
        System.out.println(d3.equals(d1));
        System.out.println(d3 == d1);

        String a = "hello";
        String b = new String("hello");
        System.out.println("a.equals(b) = " + a.equals(b));
        System.out.println(a == b);

        // 如果是基本类型 或者String ，之间使用equals 进行比较，因为 基本类型和 String 引用
        // 类型重写了equals 方法， 实际比较的是值是否相等；
        // 而引用类型之间的比较，比较的是引用的是否是同一个对象；如果是同一个对象，那么就相等；
        // 否则就不相等；
    }

    public void method02() {
        // 引用类型，equals 和 ==  进行比较，比较的是引用的对象是否相等；
        // 如果引用的对象是同一个对象，那么，equals 和  ==  就相等；否则就不相等
        Demo09 d1 = new Demo09("one");
        Demo09 d2 = new Demo09("one");
        Demo09 d3 = d1;
        System.out.println(d1.equals(d2));
        System.out.println(d1.equals(d3));
        System.out.println("");
        System.out.println(d1 == d2);
        System.out.println(d1 == d3);
        Integer a = 2;
        Integer b = 3;
        System.out.println();

        System.out.println(a.equals(b));

        System.out.println("a.intValue() = " + a.intValue());


    }

    /**
     * 如果2个对象的hashcode 相等，则 这2个对象 equals（） 一定相等吗？
     *
     */
    public void method03(){
        String a  = "通话";
        String b = "重地";
        System.out.println("a.hashCode() = " + a.hashCode());
        System.out.println("b.hashCode() = " + b.hashCode());
        System.out.println("a.equals(b) = " + a.equals(b));
        /**
         * 结果：
         * a.hashCode() = 1179395
         * b.hashCode() = 1179395
         * a.equals(b) = false
         */
    }

    public void method04(){
       StringBuffer sb = new StringBuffer();
       sb.append(2);
       StringBuilder sb2 = new StringBuilder();
       sb2.append(-4);
    }



    public static void main(String[] args) {
        new Demo09().method04();
    }

}
